package com.enjoyor.soa.traffic.api.uums.service.dubbo;

import com.enjoyor.soa.traffic.api.uums.dto.UserDto;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

public interface DubboUserService {
    /**
     * 添加用户
     * 
     * @param userDto
     *            :{@link UserDto}
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo insertUser(UserDto userDto, String token, String systemKey);

    /**
     * 删除单个用户
     * 
     * @param userId
     *            :用户编号
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo deleteUserById(String userId, String token, String systemKey);

    /**
     * 删除多个用户
     * 
     * @param ids
     *            ：userId用“，”隔开的字符串
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo deleteUserByIds(String ids, String token, String systemKey);

    /**
     * 更新用户
     * 
     * @param userDto
     *            :{@link UserDto}
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo updateUser(UserDto userDto, String token, String systemKey);

    /**
     * 获取用户
     * 
     * @param userId
     *            ：用户编号
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo getUserByName(String userName, String token, String systemKey);

    /**
     * 获取单个用户
     * 
     * @param userId
     *            ：用户编号
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo getUserById(String userId, String token, String systemKey);

    /**
     * 获取用户列表
     * 
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo getUserList(String token, String systemKey);

    /**
     * 分页获取用户
     * 
     * @param paramJSON
     *            ：包含start（开始页），limit（分页的大小）的JSON字符串
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo listPageUser(String paramJSON, String token, String systemKey);

    /**
     * 更新用户密码
     * 
     * @param paramJSON
     *            ：userId，oldPassword, newPassword的JSON字符串
     * @param token
     *            :login返回的令牌
     * @param systemKey
     *            :系统授权码
     * @return
     */
    public ResultPojo updatePwd(String paramJSON, String token, String systemKey);

    /***
     * 
     * @Title: resetPwd @Description: TODO(这里用一句话描述这个方法的作用) @param userId @param
     *         userName @param token @param systemKey @return @throws
     */
    public ResultPojo resetPwd(String userId, String userName, String token, String systemKey);

    /***
     * 
     * @Title: updateForgetPwdState @Description: 更新忘记密码状态 @param
     *         userName @param state ：是否忘记密码：0：不是，1：是 @param token @param
     *         systemKey @return @throws
     */
    public ResultPojo updateForgetPwdState(String userName, String state, String systemKey);

    /***
     * 
     * @Title: registerUser @Description: 注册用户 @param userDto @param
     *         token @param systemKey @return @throws
     */
    public ResultPojo registerUser(UserDto userDto, String systemKey);

    /***
     * 
     * @Title: getUserByRole @Description: 根据角色获取用户 @param roleName @param
     *         systemKey @return @throws
     */
    public ResultPojo getUserByRole(String roleName, String systemKey);
}
